home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.xml;
-
- import java.io.IOException;
- import java.io.StringReader;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Stack;
- import java.util.Vector;
- import org.xml.sax.AttributeList;
- import org.xml.sax.HandlerBase;
- import org.xml.sax.InputSource;
- import org.xml.sax.Parser;
- import org.xml.sax.SAXException;
-
- public class ImportXMLHandler extends HandlerBase {
- SchemaIntf schema;
- private Hashtable m_hashElements;
- private Vector m_vectElements;
- private Stack m_stack;
- private EView m_view;
-
- public ImportXMLHandler(SchemaIntf var1) {
- this.schema = var1;
- }
-
- public ImportXMLHandler(String var1) {
- String var2 = "http://Schema";
- if (var1.equalsIgnoreCase("sox")) {
- var2 = "urn:xa:tempurn";
- }
-
- this.schema = new Schema(new URI(var2), var1);
- }
-
- public void startDocument() {
- this.m_stack = new Stack();
- this.m_hashElements = new Hashtable();
- this.m_vectElements = new Vector();
- this.m_view = null;
- }
-
- public void endDocument() {
- }
-
- public InputSource resolveEntity(String var1, String var2) throws SAXException {
- return new InputSource(new StringReader(""));
- }
-
- public void startElement(String var1, AttributeList var2) {
- EModel var3 = (EModel)this.m_hashElements.get(var1);
- if (null == var3) {
- var3 = new EModel(this, var1);
- this.m_hashElements.put(var1, var3);
- this.m_vectElements.addElement(var3);
- }
-
- var3.addAttributes(var2);
- if (null != this.m_view) {
- this.m_view.addElement(var1);
- this.m_stack.push(this.m_view);
- }
-
- this.m_view = new EView((ImportXMLHandler)null, var3);
- }
-
- public void endElement(String var1) {
- if (!this.m_stack.empty()) {
- this.m_view = (EView)this.m_stack.pop();
- }
-
- }
-
- public void characters(char[] var1, int var2, int var3) throws SAXException {
- for(int var4 = var2; var4 < var2 + var3; ++var4) {
- if (!DTDParser.isWhiteChar(var1[var4])) {
- this.m_view.addCharacters();
- return;
- }
- }
-
- }
-
- public void makeDeclarations(SchemaIntf var1) {
- Enumeration var2 = this.m_vectElements.elements();
-
- while(var2.hasMoreElements()) {
- EModel var3 = (EModel)var2.nextElement();
- ElementDeclaration var4 = var3.makeElement();
- var3.makeAttributes(var4);
- var1.insertDeclaration(var4, (BaseDeclaration)null);
- }
-
- }
-
- public SchemaIntf doImport(String var1) throws SAXException {
- Parser var2 = SchemaUtilities.getParser();
- var2.setEntityResolver(this);
- var2.setErrorHandler(this);
- var2.setDocumentHandler(this);
- StringReader var3 = null;
-
- Object var5;
- try {
- var3 = new StringReader(var1);
- var2.parse(new InputSource(var3));
- this.makeDeclarations(this.schema);
- return this.schema;
- } catch (IOException var15) {
- ((Throwable)var15).printStackTrace();
- var5 = null;
- } finally {
- try {
- if (var3 != null) {
- var3.close();
- }
- } catch (Exception var14) {
- }
-
- }
-
- return (SchemaIntf)var5;
- }
- }
-